package com.xm.service.reception_desk;

import com.xm.dao.reception_desk.CommodityDao;
import com.xm.entity.Commodity;
import com.xm.entity.Page;

import java.util.List;

/**
 * 前台商品Service层
 * @author 康文程
 * @date 2023-12-27 上午 08:16
 */
public class CommodityService {
    private final CommodityDao dao = new CommodityDao();
    /**
     * 根据名称模糊查询 商品并且只查询6条数据状态要为正常
     * @return List<Commodity> 匹配的商品列表
     */
    public List<Commodity> searchXiaomi(String name) {
        return dao.searchNameLimitNumber(name);
    }
    /**
     * 根据商品种类查询商品的Id和名称还有图片、价格
     * @param classId 商品种类
     * @return List<Commodity> 匹配的商品列表
     */
    public List<Commodity> searchByCommodityClass(Integer classId) {
        return dao.searchByCommodityClass(classId);
    }

    /**
     * 根据商品种类查询商品的Id和名称还有图片
     * @param ids 商品种类Id 最多传两个
     * @return List<Commodity> 匹配的商品列表
     */
    public List<Commodity> searchByCommodityClassId(String ids) {
        return dao.searchByCommodityClassId(ids);
    }
    /**
     * 根据商品种类查询商品的Id和名称还有图片、价格、描述
     * @param classId 商品种类
     * @return List<Commodity> 匹配的商品列表
     */
    public List<Commodity> productCategory(Integer classId) {
        return dao.productCategory(classId);
    }
    /**
     * 随机查询10条商品数据
     * @return List<Commodity> 随机查询的商品列表
     */
    public List<Commodity> getRandomCommodities() {
        return dao.getRandomCommodities();
    }
    /**
     * 根据商品ID查询商品信息
     * @param commodityId 商品ID
     * @return Commodity 商品对象
     */
    public Commodity searchByCommodityId(Integer commodityId) {
        return dao.searchByCommodityId(commodityId);
    }
    /**
     * 根据商品名称或关键字模糊查询商品并进行分页，每页显示指定数量的数据
     *
     * @param nameOrKeyword 商品名称或关键字
     * @param pageNumber 当前页码
     * @param pageSize 每页显示数量
     * @return Page<Commodity> 分页查询结果
     */
    public Page<Commodity> searchNameOrKeywordWithPagination(String nameOrKeyword, Integer pageNumber,
                                                             Integer pageSize, String orderBy,
                                                             Boolean isAsc, Integer classId) {
        return dao.searchNameOrKeywordWithPagination(nameOrKeyword, pageNumber, pageSize, orderBy, isAsc, classId);
    }
}
